/*
* 
* Fichier source projet intel Acceler8 sous license GNU GPL v3.
* Voir http://www.gnu.org/copyleft/gpl.html pour plus d'informations
* La license est egalement disponible dans le repertoire /doc
* 
* Cree le : mardi 01 novembre 2011 à 21 : 56.
* Auteurs : Axel MOINET et Arnaud DURAND.
* 
* Nom de fichier : readLine.h
* Chemin du fichier : src/classes/readLine/readLine.h
* 
* Description : Classe d'implémentation de la lecture d'une ligne dans le fichier
* et stockage dans une chaine de caracteres dynamique (vector) optimise pour le traitement parallele.
* Doit être utilisee en tant que filtre de base pour le pipeline de lecture du fichier
* 
*/

#ifndef READLINE_H_INCLUDED
#define READLINE_H_INCLUDED

#include "tbb/concurrent_vector.h"
#include "tbb/pipeline.h"

using namespace tbb ;

/*
 * Lit des caracteres dans une ligne jusqu'à ce qu'elle trouve un retour à la ligne
 * filtre de base du pipeline de lecture du fichier
 */
class readLine : public tbb::filter {

public :
	//Constructeurs
	readLine();
	readLine(FILE *p_fichier);

	//Destructeur
	~readLine();

	//Fonction de lecture de la chaine
	void *operator() (void *);

private :

	/*
	 * Tableau dynamique accessible en parallele pour l'ajout et la consultation de valeurs dans une chaine de caracteres
	 * a passer au filtre suivant (constitue d'un convertLineToInt) dans le pipeline
	 */
	concurrent_vector<char> *chaineCaractere;
	FILE *fichierEntree;
	size_t octetsLus;
};

#endif
